﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace TestImport.Model.DatabaseRepositories
{
    public abstract partial class DatabaseRepository
    {
        /*************/
        /* Boeklijst */
        /*************/

        public DataTable Boeklijst_GetData()
        {
            return defaultExecuteReaderDataTable(CommandType.Text, "SELECT boeklijstID, datumLaatsteUpdate, opmerking, groepCode, boeklijstStatus FROM Boeklijst");
        }

        public DataTable Boeklijst_GetDataByBoeklijstID(int boeklijstID)
        {
            DataTable dt = new DataTable();
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@boeklijstID", boeklijstID);
                dbManager.ExecuteReader(CommandType.Text, "SELECT boeklijstID, boeklijstStatus, datumLaatsteUpdate, groepCode, opmerking FROM Boeklijst WHERE (boeklijstID = @boeklijstID)");
                dt.Load(dbManager.DataReader);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
            return dt;
        }

        public DataTable Boeklijst_GetDataByGroepCode(int groepCode)
        {
            DataTable dt = new DataTable();
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@groepCode", groepCode);
                dbManager.ExecuteReader(CommandType.Text, "SELECT boeklijstID, boeklijstStatus, datumLaatsteUpdate, groepCode, opmerking FROM Boeklijst WHERE (groepCode = @groepCode)");
                dt.Load(dbManager.DataReader);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
            return dt;
        }

        public DataTable Boeklijst_GetGroepCodeID(string groepCode)
        {
            DataTable dt = new DataTable();
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@groepCode", groepCode);
                dbManager.ExecuteReader(CommandType.Text, "SELECT boeklijstID, boeklijstStatus, datumLaatsteUpdate, groepCode, opmerking FROM Boeklijst WHERE (groepCode = @groepCode)");
                dt.Load(dbManager.DataReader);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
            return dt;
        }

        public DataTable Boeklijst_GetMaxBoeklijstID()
        {
            return defaultExecuteReaderDataTable(CommandType.Text, "SELECT MAX(boeklijstID) AS Maximum FROM Boeklijst");
        }

        public void Boeklijst_InsertByGroepCode(int groepCode)
        {
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@groepCode", groepCode);
                dbManager.ExecuteNonQuery(CommandType.Text, "INSERT INTO Boeklijst (groepCode) VALUES (@groepCode)");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
        }

        public void Boeklijst_UpdateBoeklijst(DateTime datumLaatsteUpdate, string opmerking, int groepCode, bool boeklijstStatus, int boeklijstID)
        {
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(5);
                dbManager.AddParameters(0, "@datumLaatsteUpdate", datumLaatsteUpdate);
                dbManager.AddParameters(0, "@opmerking", opmerking);
                dbManager.AddParameters(0, "@groepCode", groepCode);
                dbManager.AddParameters(0, "@boeklijstStatus", boeklijstStatus);
                dbManager.AddParameters(0, "@boeklijstID", boeklijstID);
                dbManager.ExecuteNonQuery(CommandType.Text, "UPDATE Boeklijst SET datumLaatsteUpdate = @datumLaatsteUpdate, opmerking = @opmerking, groepCode = @groepCode, boeklijstStatus = @boeklijstStatus WHERE (boeklijstID = @boeklijstID)");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
        }

        public bool Boeklijst_Truncate()
        {
            bool succeed = false;
            try
            {
                dbManager.Open();
                dbManager.ExecuteNonQuery(CommandType.Text, "TRUNCATE TABLE Boeklijst");
                succeed = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
            return succeed;
        }

    }
}
